﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Modelo
{
    [Serializable]
    public class Partida
    {
        private Mapa mapaActual;
        private int numeroDeNivel;
        private int nivelfinal;
        private Bombita Jugador;
        private string rutaPartida;

        public Partida(string pathNiveles, int cantNiveles)
        {
            numeroDeNivel = 1;
            nivelfinal = cantNiveles;
            mapaActual = leerArchivoYCrearMapa(pathNiveles);
            Jugador = new Bombita(null,16,null);
            mapaActual.SetearJugador(Jugador);
            mapaActual.UbicarJugador();
            rutaPartida = pathNiveles;
        }

        private Mapa leerArchivoYCrearMapa(string pathNiveles)
        {
                 mapaActual = new Mapa(pathNiveles + @"\NIVEL" + numeroDeNivel.ToString() + ".txt");
                 return mapaActual;
        }
        public void setMapa(Mapa unMapa)
        {
            //se agrega este test solo para probar algo del pasar de nivel
            mapaActual = unMapa;
        }
        public void setJugador(Bombita unJugador)
        {
            //se agrega este test solo para probar algo del pasar de nivel
            Jugador = unJugador;
        }
        public int getNivelActual()
        {
            return numeroDeNivel;
        }


        public Mapa getMapaActual()
        {
            return mapaActual;
        }
        public void jugar() { 
            
        }
        public bool perdioPartida() { 
            if (Jugador.getVidasRestantes() == 0)
                return true;
            return false;
        }
        public bool GanoNivel(){ 
            return mapaActual.encontroSalida();
        }
        public bool GanoPartirda(){
            if ((nivelfinal == getNivelActual()) && (this.GanoNivel()))
                return true;
            return false;
        }
        public bool partidaTerminada() {
            if (this.perdioPartida() | this.GanoPartirda()  )
                return true;
            return false;
        }
        public void PasardeNivel()
        {
            //if (this.perdioPartida() | this.GanoPartirda() | (this.GanoNivel() == false))
            //    return;
            numeroDeNivel++;
            mapaActual = leerArchivoYCrearMapa(rutaPartida);
        } 
            
            
    }
}
